The present invention relates to data caching, and more particularly to techniques for caching media data, including streaming media data, using content-sensitive identifiers.
The advent of communication networks such as the Internet has enabled users to access data stored by one or more servers coupled to the communication networks. The data may be stored in files on the servers and may be accessed by users using client systems coupled to the servers via one or more communication networks. The term “client system” is intended to refer to any computer system or like mechanism which is used by a user to request information or data stored by a server or to request a service provided by a server. The term “server system” is intended to refer to any computer system or like mechanism which stores information and provides the information in response to a user request received from a client computer, and/or provides some service. It should be apparent that a particular computer system may function both as a client and as a server.
The data stored by the servers may include media data, including streaming media data. The term “media data” is intended to include data of various types including audio data, video data, image data, streaming media data, and other types of data and combinations thereof. The term “streaming media data” is generally used to refer to media data intended to be transported at a select (often, subscribed) bit rate, and with a desired timeliness. The streaming media is adapted for playback in a desired order without regard to the order the streaming media data is received by a client system. Steaming media generally conforms to a real-time delivery protocol, such as, e.g., Real Time Streaming Protocol (RTSP), RTP, or the like. Streaming media data may also refer to data that may be contained in files stored by a media server that begin playing while the files are being transmitted over the network to a media player executing on a client system. This is in contrast to conventional data files that must be downloaded entirely to a client system before the user can view/play them using the client system. Streaming media may comprise a combination of video data, audio data, image data, interactive media data, animation data, panoramic data, executable files, presentation data, applet data, data files and other types of data in an integrated form. Streaming media data may also include “live” data streams.
Data pointers and/or data references are typically provided to enable users to access the stored data. For example, in the World Wide Web (“Web”) environment, a user may access data stored in a particular file by selecting a Uniform Resource Locator (URL) associated with the particular file. Using the client system, the user may configure a data request by selecting a URL using a program such as a browser or a multimedia player executing on the client system. In response to the data request, data corresponding to the user-selected URL may be communicated to the client system and output to the user. Examples of browsers include the Internet Explorer browser program provided by Microsoft Corporation, the Netscape Navigator browser provided by Netscape Corporation, and others. Examples of media players include RealPlayer™ provided by RealNetworks, Microsoft Windows Media Player provided by Microsoft Corporation, and QuickTime™ Player provided by Apple Corporation, and others. Various other programs may also be used to configure data requests and to output the data received in response to the data requests.
Caching proxies or servers may be used to reduce the time required to provide the requested data to the clients. Typical file caching methods include a cache receiving a file from a file server, and storing the entire file. Later, when a user requests data stored by the file, instead of serving the file from the file server, the file is served from the cache. Because the cache is typically a server that is closer to the client or has a higher bandwidth than the file sever, the file is served to the client quickly from the cache.
However, attempting to apply typical file caching methods to files that store media data, especially streaming media data, raises many problems. For instance, serving a streaming media data file from a cache requires much more processing by the cache than with classical file transfers over the web. Unlike static web servers, conventional servers which store streaming media data (referred to as “streaming media data servers”) do not provide information on the expected length of time that the media data associated or represented by a particular data pointer or data reference (for example, a URL) and stored by the streaming media data servers will remain unchanged (i.e., streaming media URLs do not unambiguously identify content associated with the URL). Due to this, at any given time, conventional caching proxies or caching servers that cache the media data streams for a particular URL cannot unambiguously determine if the version of the media data cached by the caching proxy for the particular URL is the same as the media data stored by the media data server for the particular URL. For example, the media data associated with a particular URL may have changed on the media data server after a caching server caches the data. As a result, when servicing a client media data request for the particular URL, the caching server may serve out a version of the media data to a client system which is outdated (also referred to as “stale data”) and which does not correspond to the media data associated with the URL and stored by the media data server (“current data”).
Thus, there is a need for techniques that enable a caching proxy or a caching server to unambiguously determine the version of media data cached by the caching proxy for a particular data pointer or data reference (e.g., a URL) such that an appropriate version of the media data is served to a requesting client system in an efficient and economical manner.